//存放信息
var things = things || {};
//操作类型
var operatorType="";
//存放搜索对象
var searchthings = searchthings || {};
//信息编号
var thingCode=3;
//信息构造方法
var Thing = {
        Create:function(code,thingText,over){
            this.code = code;
            this.thingText = thingText;
            this.over = over;
        },
        //添加信息
        addThing:function(){
            if(this.thingText != ""){
                things[this.code] = this;
                thingCode++;
            }else{alert("不能为空");}
        },
        //删除信息
        delThing:function (){
            for(var i in things){
                if(this.code == things[i].code){
                    delete things[i];
                }
            }
        },
        //编辑信息
        editThing:function(){
            for(var i in things){
                if(this.code == things[i].code){
                    things[i].thingText = this.thingText;
                    things[i].over = this.over;
                }
            }
        },
        //编辑信息状态
        editThingOver:function(){
            for(var i in things){
                if(this.code == things[i].code){
                    things[i].over = this.over;
                }
            }
        },
        //查找信息
        findThing:function(data){
            for(var i in things){
                if(data.code==things[i].code || 
                        data.thingText==things[i].thingText){
                    searchthings[things[i].code] = things[i];
                    // refreshDatas(searchthings);
                }
            }
        },
};

// 新建对象方法
function New(tClass,tList){
    //创建Thing类型名为new对象
    function new_(){
        //传对象和参数，用当前对象this去执行模板tclass里的create
        tClass.Create.apply(this,tList);
    }
    //设置原型对象,函数new_继承thing类
    new_.prototype = tClass;
    return new new_();
}



/**
 * 初始化数据
 */
function initThings(){
    var Thing1 = New(Thing,[0,"来自深渊","1"]);
    var Thing2 = New(Thing,[1,"狂赌深渊","1"]);
    var Thing3 = New(Thing,[2,"深渊","2"]);
    things[Thing1.code] = Thing1;
    things[Thing2.code] = Thing2;
    things[Thing3.code] = Thing3;
    return things;
}

/**
 * 往table里添加初始数据
 */
function findAllData(datas){
    var tableHtml = document.getElementById("table");
    var html="";
    for(var i in datas){
        var flag = datas[i].over;
        if(flag=="1"){
            html = html+ "<tr><td class='td_checkbox'><input type='checkbox' class='checkbox' onclick='complite("+datas[i].code+")'></td><td><input type='text' id='"+datas[i].code+"' value='"+datas[i].thingText+"' onchange='edit("+datas[i].code+")'>"
        +"</td><td class='td_btn_del'>"
        +"<input type='submit' onclick='del("+datas[i].code+")'  value='删除' class='btn_del'></td>"
        +"</tr>";
        }else{
            html = html+ "<tr><td class='td_checkbox'><input type='checkbox' class='checkbox' onclick='complite("+datas[i].code+")' checked='checked'></td><td><input type='text' class='del_text' id='"+datas[i].code+"' value='"+datas[i].thingText+"' onchange='edit("+datas[i].code+")'>"
        +"</td><td class='td_btn_del'>"
        +"<input type='submit' onclick='del("+datas[i].code+")'  value='删除' class='btn_del'></td>"
        +"</tr>";
        }
        
    }
    var page="<tr><td class='pageHelper'colspan='3'><ul class='pagination'>"+
    "<li><a>&laquo;</a></li>"+
    "<li><a>1</a></li><li><a>2</a></li><li><a>3</a></li><li><a>4</a></li><li><a>5</a></li>"+
    "<li><a>&raquo;</a></li></ul>";
    tableHtml.innerHTML="<table id='table' class='table' cellspacing='0' cellpadding=''>"
    +html+page+"</table>";
}

/**
 * 往table里添加已完成，或者只添加未完成
 */
 function findDataByOver(datas){
    var tableHtml = document.getElementById("table");
    var html1="";
    var html2="";
    for(var i in datas){
        var flag = datas[i].over;
        if(flag=="1"){
            html1 = html1+ "<tr><td class='td_checkbox'><input type='checkbox' class='checkbox' onclick='complite("+datas[i].code+")'></td><td><input type='text' id='"+datas[i].code+"' value='"+datas[i].thingText+"' onchange='edit("+datas[i].code+")'>"
        +"</td><td class='td_btn_del'>"
        +"<input type='submit' onclick='del("+datas[i].code+")'  value='删除' class='btn_del'></td>"
        +"</tr>";
        }else{
            html2 = html2+ "<tr><td class='td_checkbox'><input type='checkbox' class='checkbox' onclick='complite("+datas[i].code+")' checked='checked'></td><td><input type='text' class='del_text' id='"+datas[i].code+"' value='"+datas[i].thingText+"' onchange='edit("+datas[i].code+")'>"
        +"</td><td class='td_btn_del'>"
        +"<input type='submit' onclick='del("+datas[i].code+")'  value='删除' class='btn_del'></td>"
        +"</tr>";
        }
        
    }
    var page="<tr><td class='pageHelper'colspan='3'><ul class='pagination'>"+
    "<li><a>&laquo;</a></li>"+
    "<li><a>1</a></li><li><a>2</a></li><li><a>3</a></li><li><a>4</a></li><li><a>5</a></li>"+
    "<li><a>&raquo;</a></li></ul>";

    if(operatorType=="All1"){
        tableHtml.innerHTML="<table id='table' class='table' cellspacing='0' cellpadding=''>"
        +html1+page+"</table>";
    }else{
        tableHtml.innerHTML="<table id='table' class='table' cellspacing='0' cellpadding=''>"
        +html2+page+"</table>";
    }
}

/**
 * 首次加载页面执行方法
 */
 function loadUserDatas(){
    things=initThings();
    refreshDatas(things);
}

/**
 * 刷新用户数据
 */
function refreshDatas(datas){
    findAllData(datas);
};


/*菜单栏的点击事件，数据增删改查*/
$(function(){
    var All=document.getElementById("All");
    var All1=document.getElementById("All1");
    var All2=document.getElementById("All2");
    window.onload=function(){
        loadUserDatas();
    }
    /*所有记事*/  
    All.onclick=function(){
        operatorType="All";
        refreshDatas(things);
        All2.children[0].className="";
        All1.children[0].className="";
        All.children[0].className="light";
    }
    /*未完成记事*/ 
    All1.onclick=function(){
        operatorType="All1";
        findDataByOver(things);
        All.children[0].className="";
        All2.children[0].className="";
        All1.children[0].className="light";
    }
    /*已完成记事*/ 
    All2.onclick=function(){
        operatorType="All2";
        findDataByOver(things);
        All.children[0].className="";
        All1.children[0].className="";
        All2.children[0].className="light";
    }
    /*添加数据 */
    var btn_add=document.getElementById("btn_add");
    btn_add.onclick=function(){
        //获取input内容
        var search=document.getElementById("search");
        var search_value=search.value;
        //创建将input内容组成一个对象
        var thing=New(Thing,[thingCode,search_value,"1"]);
        //调用add方法，将对象新增入things
        thing.addThing(thing);
        //重新加载
        refreshDatas(things);
    }
     
})

     /*删除数据功能，后期添加数据，设置点击事件不生效，在标签中设置onclick传值，解决（也可以重新设置监听事件） */
    /*parents*/
function del(data){
    //创建对象,传入id
    var thing=New(Thing,[data,"","1"]);
    //调用del，传入对象
    thing.delThing(thing);
    //重新加载
    refreshDatas(things);
}

/*修改数据 */
function edit(dataCode){
    var dataText=document.getElementById(dataCode).value;
        //创建对象,传入id,text
        var thing=New(Thing,[dataCode,dataText,"1"]);
        //调用edit，传入对象
        thing.editThing(thing);
        //重新加载
        refreshDatas(things);
}

//修改至已完成
function complite(dataCode){
    var dataText=document.getElementById(dataCode).value;
        //创建对象,传入id
        var thing=New(Thing,[dataCode,dataText,"1"]);
        //调用findThing，对search传入值
        thing.findThing(thing);
        //使用search查出over值,若为1则2，2则1
        if(searchthings[dataCode].over==1){
            thing.over="2";
        }else{
            thing.over="1";
        }
        //调用edit，传入对象
        thing.editThingOver(thing);
        //判断是否在已完成或未完成页面，显示相应信息
        if(operatorType=="All1"||operatorType=="All2"){
            //重新加载已完成或未完成页面
            findDataByOver(things);
        }else{
            //重新加载
            refreshDatas(things);
        }
        
}

/**
 * 点击搜索框清空值
 */
$(function(){
    $(".search").click(function(){
        $(".search").val("");
    })
})



// 分页

var pageSize=0;//每页显示行数
var currentPage_=1;//当前页全局变量，用于跳转时判断是否在相同页，在就不跳，否则跳转。
var totalPage;//总页数
 
//当前页数，每页几行
function goPage(pno,psize){
    var itable = document.getElementById("table");
    var num = itable.rows.length;//表格所有行数(所有记录数)
    console.log(num);
     pageSize = psize;//每页显示行数
    //总共分几页 
    if(num/pageSize > parseInt(num/pageSize)){   
            totalPage=parseInt(num/pageSize)+1;   
       }else{   
           totalPage=parseInt(num/pageSize);   
       }   
    var currentPage = pno;//当前页数
     currentPage_=currentPage;
     //第几条数据开始，第几条数据结束
    var startRow = (currentPage - 1) * pageSize+1; 
    var endRow = currentPage * pageSize;
        endRow = (endRow > num)? num : endRow;    
       //遍历显示数据实现分页
    for(var i=1;i<(num+1);i++){    
        var irow = itable.rows[i-1];
        if(i>=startRow && i<=endRow){
               
        }else{
           
        }
    }
}
 